package br.tads.poo.notas.gerencia;
import java.util.ArrayList;
import br.tads.poo.notas.gerencia.Caderno;
import br.tads.poo.notas.excecoes.*;

public class Usuario {
	public String nome;
	public String senha;
	private ArrayList<Caderno> cadernos = new ArrayList<Caderno>();

	public Usuario(){}
	
	@SuppressWarnings("deprecation")
	public Usuario(String nome, String senha) throws CaracteresInsulficientesException, EntradaStringVaziaException, EntradaComEspacosException{
		if(nome.equals("")){
			throw new EntradaStringVaziaException("- O login não pode ser vazio.");
		}
		else if(nome.length() < 4){	
			throw new CaracteresInsulficientesException("- O login deve conter no mínimo 4 caracteres.");
		}
		if(senha.equals("")){
			throw new EntradaStringVaziaException("- A senha não pode ser vazia.");
		}
		else if(senha.length() < 4){	
			throw new CaracteresInsulficientesException("- A senha deve conter no mínimo 4 caracteres.");
		}
		for(int	i =	0; i < nome.length(); i++){	
			char c = nome.charAt(i);	
			if(Character.isSpace(c)){	
				throw new EntradaComEspacosException("- O nome não pode conter espaços.");
			}
		}
		for(int	i =	0; i < senha.length(); i++){	
			char c = senha.charAt(i);	
			if(Character.isSpace(c)){	
				throw new EntradaComEspacosException("- A senha não pode conter espaços.");
			}
		}
		this.nome = nome;
		this.senha = senha;
	}

	public String getNome() { return nome; }
	public void setNome(String nome) { this.nome = nome; }
	public String getSenha() { return senha; }
	public void setSenha(String senha) { this.senha = senha; }

	public String criarCaderno(String nome) throws EntradaStringVaziaException{
		try{
			for(int i = 0; i < cadernos.size(); i++){
				if(nome.equals(cadernos.get(i).getNome())){
					return "- Nome existente.";
				}
			}
			Caderno caderno = new Caderno(nome);
			cadernos.add(caderno);
			return "- Caderno criado.";
		}
		catch(CaracteresInsulficientesException	e){	
			return e.getMessage();
		}
	}

	public Caderno verCaderno(String nome) throws EntradaStringVaziaException{
		for(int i = 0; i < cadernos.size(); i++){
			if(nome.equals(cadernos.get(i).getNome())){
				return cadernos.get(i);
			}
		}
		return null;
	}

	public String editarCaderno(String nome, String novoNome) throws EntradaStringVaziaException{
		try{
			for(int i = 0; i < cadernos.size(); i++){
				if(novoNome.equals(cadernos.get(i).getNome())){
					return "- Nome existente.";
				}
			}
			for(int i = 0; i < cadernos.size(); i++){
				if(nome.equals(cadernos.get(i).getNome())){
					cadernos.get(i).setNome(novoNome);
					return "- Nome alterado.";
				}
			}
			return "- Caderno não encontrado.";
		}
		catch(EntradaStringVaziaException	e){	
			return e.getMessage();
		}
	}

	public ArrayList<Caderno> listarCadernos(){
		return cadernos;
	}

	public String excluirCaderno(String nome) throws EntradaStringVaziaException{
		for(int i = 0; i < cadernos.size(); i++){
			if(nome.equals(cadernos.get(i).getNome())){
				cadernos.remove(cadernos.get(i));
				return "- Caderno removido.";
			}
		}
		return "- Caderno não encontrado.";
	}
}